class SRVetCommando extends SRVeterancy
	abstract;

static function int GetPerkProgressInt( ClientPerkRepLink StatOther, out int FinalInt, byte CurLevel, byte ReqNum )
{
	switch( CurLevel )
	{
	case 0:
		if( ReqNum==0 )
			FinalInt = 0;
		else FinalInt = 0;
		break;
	case 1:
		if( ReqNum==0 )
			FinalInt = 100; // 100
		else FinalInt = 500000; // 0.5M
		break;
	case 2:
		if( ReqNum==0 )
			FinalInt = 300; // 200
		else FinalInt = 1500000; // 1M
		break;
	case 3:
		if( ReqNum==0 )
			FinalInt = 700; // 400
		else FinalInt = 3500000; // 2M
		break;
	case 4:
		if( ReqNum==0 )
			FinalInt = 1200; // 500
		else FinalInt = 6000000; // 2.5M
		break;
	case 5:
		if( ReqNum==0 )
			FinalInt = 2000; // 800
		else FinalInt = 10000000; // 4M
		break;
	case 6:
		if( ReqNum==0 )
			FinalInt = 3400; // 1400
		else FinalInt = 17000000; // 7M
		break;
	case 7:
		if( ReqNum==0 )
			FinalInt = 5400; // 2000
		else FinalInt = 27000000; // 10M
		break;
	case 8:
		if( ReqNum==0 )
			FinalInt = 7000; // 2600
		else FinalInt = 40000000; // 13M
		break;
	default:
		if( ReqNum==0 )
			FinalInt = 12000 * ( CurLevel - 8 );
		else FinalInt = 60000000 * ( CurLevel - 8 );
	}
	if( ReqNum==0 )
		return Min(StatOther.RStalkerKillsStat,FinalInt);
	return Min(StatOther.RBullpupDamageStat,FinalInt);
}

static function bool ShowStalkers(KFPlayerReplicationInfo KFPRI)
{
	return true;
}

static function float GetStalkerViewDistanceMulti(KFPlayerReplicationInfo KFPRI)
{
	switch ( KFPRI.ClientVeteranSkillLevel )
	{
		case 0:
			return 0.49; // 70%
		case 1:
			return 0.64; // 80%
		case 2:
			return 0.7225; // 85%
		case 3:
			return 0.81; // 90%
		case 4:
			return 1.0; // 100%
		case 5:
			return 1.21; // 110%
		case 6:
			return 1.40; // 120%
		case 7:
			return 1.69; // 130%
		case 8:
			return 1.96; // 140%
		case 9:
		case 10:
			return 2.25; // 150%
	}

	return 1.0; // 100% of Standard Distance(800 units or 16 meters)
}

static function float GetSyringeMinimumSelfHealHPLevel(KFPlayerReplicationInfo KFPRI)
{
	switch( KFPRI.ClientVeteranSkillLevel )
	{
		case 0:
		case 1:
			return 35.0;
		case 2:
		case 3:
			return 40.0;
		case 4:
			return 45.0;
		case 5:
		case 6:
			return 50.0;
		case 7:
			return 55.0;
		case 8:
			return 60.0;
		case 9:
		default:
			return 65.0;
	}
	return 20.0;
}

static function float GetMagCapacityMod(KFPlayerReplicationInfo KFPRI, KFWeapon Other)
{
	if( KFPRI.ClientVeteranSkillLevel > 9 && SCARMK17AssaultRifle(Other) != none )
		return 3.00 * GetProperMagCapacity(Other);

	if ( BullpupNew(Other) != none || AK47AssaultRifle(Other) != none || SCARMK17AssaultRifle(Other) != none
		|| M7A3MMedicGun(Other) != none || Bal_M4203AssaultRifle(Other) != none || Bal_M4AssaultRifle(Other) != none
		|| AKC74AssaultRifle(Other) != none || AK47NAssaultRifle(Other) != none || AN94AssaultRifle(Other) != none
		|| AUG_A3AR(Other) != none || SR3MSpecnazRifle(Other) != none || XM8AssaultRifle(Other) != none
		|| Mkb42New(Other) != none || PM(Other) != none )
	{
		if ( KFPRI.ClientVeteranSkillLevel < 5 )
			return 1.25 * GetProperMagCapacity(Other);
		else
			return ( 1.05 + 0.05 * float(Min(9,KFPRI.ClientVeteranSkillLevel)) ) * GetProperMagCapacity(Other);
	}
	return GetProperMagCapacity(Other);
}

static function float GetAmmoPickupMod(KFPlayerReplicationInfo KFPRI, KFAmmunition Other)
{
	if ( SCARMK17Ammo(Other) != none )
		return 3.00 * GetProperAmmoPickupAmount(Other);

	if ( BullpupNewAmmo(Other) != none || AK47Ammo(Other) != none || SCARMK17Ammo(Other) != none
		|| M7A3MAmmo(Other) != none || Bal_M4203Ammo(Other) != none || AKC74Ammo(Other) != none
		|| AK47NAmmo(Other) != none || Bal_M4Ammo(Other) != none || AN94Ammo(Other) != none
		|| AUG_A3ARAmmo(Other) != none || SR3MAmmo(Other) != none || XM8Ammo(Other) != none
		|| XM8gAmmo(Other) != none || MKb42NewAmmo(Other) != none || PMAmmo(Other) != none )
	{
		if ( KFPRI.ClientVeteranSkillLevel < 5 )
			return 1.25 * GetProperAmmoPickupAmount(Other);
		else
			return ( 1.05 + 0.05 * float(Min(9,KFPRI.ClientVeteranSkillLevel)) ) * GetProperAmmoPickupAmount(Other);
	}
	return GetProperAmmoPickupAmount(Other);
}

static function float AddExtraAmmoFor(KFPlayerReplicationInfo KFPRI, Class<Ammunition> AmmoType)
{
	if ( AmmoType == class'SCARMK17Ammo' && KFPRI.ClientVeteranSkillLevel > 9 )
		return 3.0 * GetProperAmmoAmount(AmmoType);
		
	if ( AmmoType == class'RadioBombAmmo' )
	{
		if ( KFPRI.ClientVeteranSkillLevel < 5 )
			return GetProperAmmoAmount(AmmoType);
		else if ( KFPRI.ClientVeteranSkillLevel < 9 )
			return ( 0.50 * float(KFPRI.ClientVeteranSkillLevel) - 1.0 ) * GetProperAmmoAmount(AmmoType);
		else
			return 3.50 * GetProperAmmoAmount(AmmoType);
	}
		
	if ( AmmoType == class'FragAmmo' || AmmoType == class'Frag1Ammo' )
	{
		if( KFPRI.ClientVeteranSkillLevel < 5 )
			return 1.0;
		if( KFPRI.ClientVeteranSkillLevel > 4 )
			return ( 0.20 + 0.20 * float(Min(9,KFPRI.ClientVeteranSkillLevel)) ) * GetProperAmmoAmount(AmmoType); // 10 grenades
	}
	
	if ( /*AmmoType == class'BullpupNewAmmo' || AmmoType == class'AK47Ammo' || AmmoType == class'SCARMK17Ammo' || AmmoType == class'FnFalAmmo' ||
	     AmmoType == class'M7A3MAmmo' || AmmoType == class'Bal_M4203Ammo' || AmmoType == class'M203Ammo' || AmmoType == class'AKC74Ammo'||
		 AmmoType == class'AK47NAmmo' */ AmmoType != class'WelderAmmo' )
	{
		if ( KFPRI.ClientVeteranSkillLevel < 5 )
			return 1.25 * GetProperAmmoAmount(AmmoType);
		else
			return ( 1.05 + 0.05 * float(Min(9,KFPRI.ClientVeteranSkillLevel)) ) * GetProperAmmoAmount(AmmoType);
	}
	return GetProperAmmoAmount(AmmoType);
}
static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class<DamageType> DmgType)
{
/*
	if( DmgType != class'DamTypeAxe' && DmgType != class'DamTypeClaymoreSword' && DmgType != class'DamTypeKnife' && DmgType != class'DamTypeMachete' && DmgType != class'DamTypeKatana' &&
		DmgType != class'DamTypeChainsaw' && DmgType != class'DamTypeDualies' && DmgType != class'DamTypeExplosion' &&
		DmgType != class'DamTypeExplosiveBullet' )
*/

	if ( DmgType == class'DamTypeBullpupNew' || DmgType == class'DamTypeAK47AssaultRifle' || DmgType == class'DamTypeSCARMK17AssaultRifle' ||
	     DmgType == class'DamTypeFnFalAssaultRifle' || DmgType == class'DamTypeM7A3M' || DmgType == class'DamTypeAKC74AR' ||
		 DmgType == class'DamTypeAK47N' || DmgType == class'DamTypeM4AR' || DmgType == class'DamTypeWaltherP99' ||
		 DmgType == class'DamTypeDualWaltherP99' || DmgType == class'DamTypeAN94' || DmgType == class'DamTypeAUG_A3AR' || DmgType == class'DamTypeSR3M' ||
		 DmgType == class'DamTypeXM8AssaultRifle' || class<DamTypeAssaultRifle>(DmgType) != none )

		if ( KFPRI.ClientVeteranSkillLevel == 0 )
			return 1.25 * Super.AddDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);
		else if ( KFPRI.ClientVeteranSkillLevel == 1 )
			return 1.30 * Super.AddDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);
		else if ( KFPRI.ClientVeteranSkillLevel == 2 )
			return 1.40 * Super.AddDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);
		else if ( KFPRI.ClientVeteranSkillLevel == 3 )
			return 1.50 * Super.AddDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);
		else if ( KFPRI.ClientVeteranSkillLevel == 4 )
			return 1.60 * Super.AddDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);
		else if ( KFPRI.ClientVeteranSkillLevel == 5 )
			return 1.70 * Super.AddDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);
		else if ( KFPRI.ClientVeteranSkillLevel == 6 )
			return 1.80 * Super.AddDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);
		else if ( KFPRI.ClientVeteranSkillLevel == 7 )
			return 1.95 * Super.AddDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);
		else if ( KFPRI.ClientVeteranSkillLevel == 8 )
			return 2.10 * Super.AddDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);
		else if ( KFPRI.ClientVeteranSkillLevel > 8 )
			return 2.25 * Super.AddDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);

	return Super.AddDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);
}

static function int ReduceDamage(KFPlayerReplicationInfo KFPRI, KFPawn Injured, KFMonster DamageTaker, int InDamage, class<DamageType> DmgType)
{
	local float FinalDamage,Modifer;

	Modifer = 1.00;
	
	if ( class<DamTypeAN94Proj>(DmgType) != none || class<DamTypeM79Grenade>(DmgType) != none )
	{
		Modifer = 0.30;
	}
	else if ( class<DamTypeRadioBomb>(DmgType) != none )
	{
		Modifer = 0.15;
	}
	else if ( class<SirenScreamDamage>(DmgType) != none || class<DamTypePoison>(DmgType) != none )
	{
		if ( KFPRI.ClientVeteranSkillLevel == 0 )
			Modifer = 0.70;
		else if ( KFPRI.ClientVeteranSkillLevel == 1 )
			Modifer = 0.70;
		else if ( KFPRI.ClientVeteranSkillLevel == 2 )
			Modifer = 0.65;
		else if ( KFPRI.ClientVeteranSkillLevel == 3 )
			Modifer = 0.60;
		else if ( KFPRI.ClientVeteranSkillLevel == 4 )
			Modifer = 0.55;
		else if ( KFPRI.ClientVeteranSkillLevel == 5 )
			Modifer = 0.55;
		else if ( KFPRI.ClientVeteranSkillLevel == 6 )
			Modifer = 0.50;
		else if ( KFPRI.ClientVeteranSkillLevel == 7 )
			Modifer = 0.50;
		else if ( KFPRI.ClientVeteranSkillLevel >= 8 )
			Modifer = 0.45;
		else if ( KFPRI.ClientVeteranSkillLevel > 8 )
			Modifer = 0.45;
	}
	else if ( class<DamTypePatriarchChaingun>(DmgType) != none )
	{
		if ( KFPRI.ClientVeteranSkillLevel == 0 )
			Modifer = 0.50;
		else if ( KFPRI.ClientVeteranSkillLevel == 1 )
			Modifer = 0.45;
		else if ( KFPRI.ClientVeteranSkillLevel == 2 )
			Modifer = 0.40;
		else if ( KFPRI.ClientVeteranSkillLevel == 3 )
			Modifer = 0.35;
		else if ( KFPRI.ClientVeteranSkillLevel == 4 )
			Modifer = 0.30;
		else if ( KFPRI.ClientVeteranSkillLevel == 5 )
			Modifer = 0.25;
		else if ( KFPRI.ClientVeteranSkillLevel == 6 )
			Modifer = 0.20;
		else if ( KFPRI.ClientVeteranSkillLevel == 7 )
			Modifer = 0.15;
		else if ( KFPRI.ClientVeteranSkillLevel == 8 )
			Modifer = 0.10;
		else if ( KFPRI.ClientVeteranSkillLevel > 8 )
			Modifer = 0.06;
	}
	
	FinalDamage = InDamage;
	FinalDamage *= Modifer;
	FinalDamage += SRHumanPawn(SRPlayerReplicationInfo(KFPRI).Controller.Pawn).IncomingDamageRemainder;
	InDamage = FinalDamage;
	SRHumanPawn(SRPlayerReplicationInfo(KFPRI).Controller.Pawn).IncomingDamageRemainder = FinalDamage - float(InDamage);
	
	return Super.ReduceDamage(KFPRI,Injured,DamageTaker,InDamage,DmgType);
}

static function float ModifyRecoilSpread(KFPlayerReplicationInfo KFPRI, WeaponFire Other, out float Recoil)
{
	if ( IsBelongToPerk(KFPRI,Other.Weapon.PickupClass) )
	{
		if ( KFPRI.ClientVeteranSkillLevel == 0 )
			Recoil = 0.70;
		else if ( KFPRI.ClientVeteranSkillLevel == 1 )
			Recoil = 0.65;
		else if ( KFPRI.ClientVeteranSkillLevel == 2 )
			Recoil = 0.60;
		else if ( KFPRI.ClientVeteranSkillLevel == 3 )
			Recoil = 0.55;
		else if ( KFPRI.ClientVeteranSkillLevel == 4 )
			Recoil = 0.50;
		else if ( KFPRI.ClientVeteranSkillLevel == 5 )
			Recoil = 0.45;
		else if ( KFPRI.ClientVeteranSkillLevel == 6 )
			Recoil = 0.40;
		else if ( KFPRI.ClientVeteranSkillLevel == 7 )
			Recoil = 0.35;
		else if ( KFPRI.ClientVeteranSkillLevel == 8 )
			Recoil = 0.30;
		else if ( KFPRI.ClientVeteranSkillLevel > 8 )
			Recoil = 0.20;
		
		return Recoil * GetProperRecoilSpread(Other);
	}

	return GetProperRecoilSpread(Other);
}

static function float GetFireSpeedMod(KFPlayerReplicationInfo KFPRI, Weapon Other)
{
	if ( M7A3MMedicGun(Other) != none )
		return 1.50 * Super.GetFireSpeedMod(KFPRI,Other);

	return Super.GetFireSpeedMod(KFPRI,Other);
}

static function float GetReloadSpeedModifier(KFPlayerReplicationInfo KFPRI, KFWeapon Other)
{
	if ( KFPRI.ClientVeteranSkillLevel < 7 )
	{
		return 1.20 + (0.05 * float(Min(9,KFPRI.ClientVeteranSkillLevel)));
	}
	else
	{
		return 0.90 + (0.10 * float(Min(9,KFPRI.ClientVeteranSkillLevel)));
	}
}

static function int ZedTimeExtensions(KFPlayerReplicationInfo KFPRI)
{
	if( KFPRI.ClientVeteranSkillLevel < 9 )
		return Min(KFPRI.ClientVeteranSkillLevel, 4);

	if( KFPRI.ClientVeteranSkillLevel < 10 )
		return 5;
		
	return 6;
}

static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI)
{
	return class'DesorientatingNade';
}

static function bool IsBelongToPerk(KFPlayerReplicationInfo KFPRI, Class<Pickup> PickupClass)
{
	if ( PickupClass == class'BullpupNewPickup' || PickupClass == class'AK47Pickup' || PickupClass == class'SCARMK17Pickup'
		|| PickupClass == class'M7A3MPickup' || PickupClass == class'Bal_M4203Pickup' || PickupClass == class'AK47NPickup'
		|| PickupClass == class'M7A3MPickup' || PickupClass == class'Bal_M4Pickup' || PickupClass == class'AN94Pickup'
		|| PickupClass == class'AUG_A3ARPickup' || PickupClass == class'SR3MPickup' || PickupClass == class'XM8Pickup'
		|| PickupClass == class'RadioBombPickup' || PickupClass == class'MKb42NewPickup' || PickupClass == class'PMPickup' )
	return true;

	return Super.IsBelongToPerk(KFPRI,PickupClass);
}

// Change the cost of particular items
static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item)
{
	if ( Item == class'RadioBombPickup' )
		return 0.35 * GetDefaultCostScaling(KFPRI.ClientVeteranSkillLevel) * GetProperCostScaling(Item);
	else if ( IsBelongToPerk(KFPRI,Item) )
		return GetDefaultCostScaling(KFPRI.ClientVeteranSkillLevel) * GetProperCostScaling(Item);
	return GetProperCostScaling(Item);
}

static function float GetAmmoCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item)
{
	if ( Item == class'RadioBombPickup' )
		return 0.35 * GetDefaultCostScaling(KFPRI.ClientVeteranSkillLevel) * GetProperAmmoCostScaling(Item);
	return GetProperAmmoCostScaling(Item);
}

// Give Extra Items as default
static function AddDefaultInventory(KFPlayerReplicationInfo KFPRI, Pawn P)
{
	super.AddDefaultInventory(KFPRI,P);
	
	if ( SRPlayerReplicationInfo(KFPRI).bRespawned )
		return;

	if ( KFPRI.ClientVeteranSkillLevel > 2 && KFPRI.ClientVeteranSkillLevel < 9 )
		KFHumanPawn(P).CreateInventoryVeterancy("ServerPerksV4C.BullpupNew", GetCostScaling(KFPRI, class'BullpupNewPickup'));

	if ( KFPRI.ClientVeteranSkillLevel > 2 && KFPRI.ClientVeteranSkillLevel < 6 )
		KFHumanPawn(P).CreateInventoryVeterancy("ServerPerksV4C.Bal_M4AssaultRifle", GetCostScaling(KFPRI, class'Bal_M4Pickup'));

	if ( KFPRI.ClientVeteranSkillLevel > 5 )
		KFHumanPawn(P).CreateInventoryVeterancy("KFMod.SCARMK17AssaultRifle", GetCostScaling(KFPRI, class'SCARMK17Pickup'));

	if ( KFPRI.ClientVeteranSkillLevel > 8 )
		KFHumanPawn(P).CreateInventoryVeterancy("ServerPerksV4C.XM8AssaultRifle", GetCostScaling(KFPRI, class'XM8Pickup'));
		
	SRPlayerReplicationInfo(KFPRI).bRespawned = true;
}

static function float GetMovementSpeedModifier(KFPlayerReplicationInfo KFPRI, KFGameReplicationInfo KFGRI)
{
	if ( KFPRI.ClientVeteranSkillLevel > 9 )
		return 1.18;
	return 1.00;
}

static function float GetMeleeMovementSpeedModifier(KFPlayerReplicationInfo KFPRI)
{
	if ( KFPRI.ClientVeteranSkillLevel > 9 )
		return 0.06;
	
	return 0.10;
}

// Display enemy health bars and stun/charge bars
static function SpecialHUDInfo(KFPlayerReplicationInfo KFPRI, Canvas C)
{
	local KFMonster KFEnemy;
	local float MaxDistance;
	local DKPatriarch Clamely;
	local HUDKillingFloor HKF;
	local SRHUDKillingFloor SRHKF;
	
			SRHKF = SRHUDKillingFloor(C.ViewPort.Actor.myHUD);

		if ( SRHKF == none || Pawn(C.ViewPort.Actor.ViewTarget)==none || Pawn(C.ViewPort.Actor.ViewTarget).Health<=0 )
			return;

			switch ( KFPRI.ClientVeteranSkillLevel )
			{
				case 0:
					MaxDistance = 480; // 60%   9.6 metres
					break;
				case 1:
					MaxDistance = 560; // 70% // 11.2 metres
					break;
				case 2:
					MaxDistance = 640; // 80% // 12.8 metres
					break;
				case 3:
					MaxDistance = 720; // 90% // 14.4 metres
					break;
				case 4:
					MaxDistance = 800; // 100%   16 metres
					break;
				case 5:
					MaxDistance = 880; // 110%   17.6 metres
					break;
				case 6:
					MaxDistance = 960; // 120%   19.2 metres
					break;
				case 7:
					MaxDistance = 1040; // 130%   20.8 metres
					break;
				case 8:
					MaxDistance = 1120; // 140%   22.4 metres
					break;
				default:
					MaxDistance = 1200; // 150%   24 metres
					break;
			}

			foreach C.ViewPort.Actor.VisibleCollidingActors(class'KFMonster', KFEnemy, MaxDistance, C.ViewPort.Actor.CalcViewLocation)
			if ( KFEnemy.Health > 0 && DKPatriarch(KFEnemy) == none )
			{
				DKMonster(KFEnemy).Detect();
				SRHKF.StartDrawingBars();
				SRHKF.DrawBars(C, KFEnemy, 50.0, "health");
				if ( KFPRI.ClientVeteranSkill == class'SRVetCommando' )
					SRHKF.DrawBars(C, KFEnemy, 50.0, "armor");
			}
			
			foreach C.ViewPort.Actor.VisibleCollidingActors(class'DKPatriarch', Clamely, MaxDistance * 2, C.ViewPort.Actor.CalcViewLocation)
			if ( Clamely.Health > 0 )
			{
				Clamely.Detect();
				SRHKF.StartDrawingBars();
				SRHKF.DrawBars(C, Clamely, 50.0, "health");
				if ( KFPRI.ClientVeteranSkill == class'SRVetCommando' )
					SRHKF.DrawBars(C, Clamely, 50.0, "armor");
			}
			
	Super.SpecialHUDInfo(KFPRI,C);
}

static function bool IsPerkTarget(PlayerReplicationInfo PRI, class<Actor> TargetClass)
{
	if ( TargetClass == class'DKStalker' || TargetClass == class'DKPoisoner'
		|| TargetClass == class'DKShiver' )
	{
		return true;
	}

	return Super.IsPerkTarget(PRI,TargetClass);
}

static function string GetPickupShopName(KFPlayerReplicationInfo KFPRI, Class<Pickup> PickupClass, optional int FireModeNum)
{
	if ( PickupClass == class'Frag1Pickup' )
		return "Desorientating Nade";
	
	return Super.GetPickupShopName(KFPRI,PickupClass);
}

defaultproperties
{
     CustomLevelInfo="50% more damage with Bullpup/AK47/SCAR|%r less recoil with Bullpup/AK47/SCAR|25% larger Bullpup/AK47/SCAR clip|%s faster reload with all weapons|%d discount on Bullpup/AK47/SCAR|Spawn with an AK47|Can see cloaked Stalkers from 16m|Can see enemy health from 16m|Up to %z Zed-Time Extensions"
     NumRequirements=2
     PerkIndex=3
	 BronzeIcon=Texture'SunriseHUD.Icons.Perk_Commando_Bronze'
	 SilverIcon=Texture'SunriseHUD.Icons.Perk_Commando_Silver'
	 GoldIcon=Texture'SunriseHUD.Icons.Perk_Commando_Gold'
     OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Commando'
     OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Commando_Gold'
     VeterancyName="Commando"
     Requirements(0)="Kill %x stalkers playing this perk"
     Requirements(1)="Deal %x damage with assault rifles"
     SRLevelEffects(0)="25% more damage with assault rifles|30% less recoil with assault rifles|25% larger assault rifles clip|20% faster reload with all weapons|50% less damage from Patriarch chaingun|30% resistance to siren scream and poison|Each self-heal lefts at least 35 hp|Grenades desorientate enemies|50% discount on assault rifles|Can see enemy health and cloaked Stalkers from 10m"
     SRLevelEffects(1)="30% more damage with assault rifles|35% less recoil with assault rifles|25% larger assault rifles clip|25% faster reload with all weapons|55% less damage from Patriarch chaingun|30% resistance to siren scream and poison|Each self-heal lefts at least 35 hp|Grenades desorientate enemies|55% discount on assault rifles|Can see enemy health and cloaked Stalkers from 11m|Zed-Time can be extended by killing an enemy while in slow motion"
     SRLevelEffects(2)="40% more damage with assault rifles|40% less recoil with assault rifles|25% larger assault rifles clip|30% faster reload with all weapons|60% less damage from Patriarch chaingun|35% resistance to siren scream and poison|Each self-heal lefts at least 40 hp|Grenades desorientate enemies|60% discount on assault rifles|Can see enemy health and cloaked Stalkers from 13m|Up to 2 Zed-Time Extensions"
     SRLevelEffects(3)="50% more damage with assault rifles|45% less recoil with assault rifles|25% larger assault rifles clip|35% faster reload with all weapons|65% less damage from Patriarch chaingun|40% resistance to siren scream and poison|Each self-heal lefts at least 40 hp|Grenades desorientate enemies|65% discount on assault rifles|Can see enemy health and cloaked Stalkers from 14m|Up to 3 Zed-Time Extensions|Spawn with an AK-74 and Bullpup"
     SRLevelEffects(4)="60% more damage with assault rifles|50% less recoil with assault rifles|25% larger assault rifles clip|40% faster reload with all weapons|70% less damage from Patriarch chaingun|45% resistance to siren scream and poison|Each self-heal lefts at least 45 hp|Grenades desorientate enemies|70% discount on assault rifles|Can see enemy health and cloaked Stalkers from 16m|Up to 4 Zed-Time Extensions|Spawn with an AK-74 and Bullpup"
     SRLevelEffects(5)="70% more damage with assault rifles|55% less recoil with assault rifles|30% larger assault rifles clip|45% faster reload with all weapons|75% less damage from Patriarch chaingun|45% resistance to siren scream and poison|Each self-heal lefts at least 50 hp|Grenades desorientate enemies|Can carry 6 grenades|70% discount on assault rifles|Can see enemy health and cloaked Stalkers from 18m|Up to 4 Zed-Time Extensions|Spawn with an AK-74 and Bullpup"
     SRLevelEffects(6)="80% more damage with assault rifles|60% less recoil with assault rifles|35% larger assault rifles clip|50% faster reload with all weapons|80% less damage from Patriarch chaingun|50% resistance to siren scream and poison|Each self-heal lefts at least 50 hp|Grenades desorientate enemies|Can carry 7 grenades|70% discount on assault rifles|Can see enemy health and cloaked Stalkers from 19m|Up to 4 Zed-Time Extensions|Spawn with a SCARMK-17 and Bullpup"
	 SRLevelEffects(7)="95% more damage with assault rifles|65% less recoil with assault rifles|40% larger assault rifles clip|60% faster reload with all weapons|85% less damage from Patriarch chaingun|50% resistance to siren scream and poison|Each self-heal lefts at least 55 hp|Grenades desorientate enemies|Can carry 8 grenades|75% discount on assault rifles|Can see enemy health and cloaked Stalkers from 21m|Up to 4 Zed-Time Extensions|Spawn with a SCARMK-17 and Bullpup"
	 SRLevelEffects(8)="110% more damage with assault rifles|70% less recoil with assault rifles|45% larger assault rifles clip|70% faster reload with all weapons|90% less damage from Patriarch chaingun|55% resistance to siren scream and poison|Each self-heal lefts at least 60 hp|Grenades desorientate enemies|Can carry 9 grenades|75% discount on assault rifles|Can see enemy health and cloaked Stalkers from 22m|Up to 4 Zed-Time Extensions|Spawn with a SCARMK-17 and Bullpup"
	 SRLevelEffects(9)="125% more damage with assault rifles|80% less recoil with assault rifles|50% larger assault rifles clip|80% faster reload with all weapons|94% less damage from Patriarch chaingun|55% resistance to siren scream and poison|Each self-heal lefts at least 65 hp|Grenades desorientate enemies|Can carry 10 grenades|80% discount on assault rifles|Can see enemy health and cloaked Stalkers from 24m|Up to 5 Zed-Time Extensions|Spawn with an XM8 and SCARMK-17"
	 SRLevelEffects(10)="125% more damage with assault rifles|80% less recoil with assault rifles|50% larger assault rifles clip|80% faster reload with all weapons|94% less damage from Patriarch chaingun|55% resistance to siren scream and poison|Each self-heal lefts at least 65 hp|Grenades desorientate enemies|Can carry 10 grenades|80% discount on assault rifles|Can see enemy health and cloaked Stalkers from 24m|Up to 6 Zed-Time Extensions|Spawn with an XM8, SCARMK-17 and 100 armor|Elite abilities:|70% extra headshot damage with 9mm tactical|18% increased movement speed|Weapon Mastery - 100% extra SCARMK-17 mag capacity"
}
